home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / cobol.arc / COBOL.DOC < prev    next >
Text File  |  1985-08-26  |  37KB  |  1,432 lines

  1. COBOL.DOC                                    Page 1
  2.  
  3.  
  4.  
  5.              NPS MICRO-COBOL  Ver. 2.1
  6.  
  7.                     User's Guide
  8.  
  9.  
  10.                   I. Organization
  11.  
  12. The compiler is designed to run on an 8080 system in 
  13. an interactive mode through the use of a teletype or 
  14. console.   It  requires at least 24k of main  memory 
  15. and  a mass storage device for reading and  writing.  
  16. The compiler is composed of two parts, each of which 
  17. reads a portion of the input file.   Part One  reads 
  18. the  input  program to the end of the Data  Division 
  19. and builds the symbol table.  At the end of the Data 
  20. Division,  Part  One is overlayed by Part Two  which 
  21. uses  the  symbol table to produce  the  code.   The 
  22. output code is written as it is produced to minimize 
  23. the use of internal storage.
  24.  
  25. The  EXEC  Program  builds the core  image  for  the 
  26. intermediate  code  and performs such  functions  as 
  27. backstuffing  addresses  and offsetting  address  in 
  28. subroutines.  EXEC then copies the interpreter (CIN-
  29. TERP.COM)  into memory and transfers control to  it.  
  30. The interpreter is controlled by a large case state-
  31. ment that decodes the instructions and performs  the 
  32. required actions.
  33.  
  34.  
  35. II. MICRO-COBOL Elements
  36.  
  37. This  section contains a description of each element 
  38. in  the language and shows simple examples of  their 
  39. use.  The following conventions are used in explain-
  40. ing the formats:  Elements enclosed in broken braces 
  41. (<>)  are themselves complete entites and  are  des-
  42. cribed  elsewhere in the manual.   Elements enclosed 
  43. in braces({}) are choices, one of the elements which 
  44. is to be used.   Elements enclosed in brackets  ([]) 
  45. are  optional.   All elements in capital letters are 
  46. reserved words and must be spelled exactly.
  47.  
  48. User names are indicated in lower case.  These names 
  49. are  unrestricted in length,  however they  must  be 
  50. unique  within  the first 15 characters.   The  only 
  51. other  restriction on user names is that  the  first 
  52. character must be an alpha character.  The remainder 
  53. of  the user name can have any combination of repre-
  54. sentable characters in it.
  55. COBOL.DOC                                    Page 2
  56.  
  57.  
  58. The  input to the compiler does not need to  conform 
  59. to standard COBOL format.   Free form input will  be 
  60. accepted  as  the default  condition.   If  desired, 
  61. sequence  numbers  can be entered in the  first  six 
  62. positions of each line.   However, a toggle needs to 
  63. be  set to cause the compiler to ignore the sequence 
  64. numbers.
  65.  
  66. The first character position on any line is used  to 
  67. indicate the following:
  68.  
  69.            * - indicates a comment entry.
  70.            : - indicates a debugging line.
  71.            / - indicates a page eject.
  72.  
  73.  
  74.                III. Compiler Toggles
  75.  
  76. There  are six compiler toggles which are controlled 
  77. by  an entry following the compiler activation  com-
  78. mand,  COBOL<filename>.   The  format of  the  entry 
  79. consists  of  following <filename> by one space  and 
  80. then  entering  a "$" followed  immediately  by  the 
  81. desired toggles.  There must be only one space after 
  82. <filename>  and  no spaces between the "$"  and  the 
  83. toggles.   The  following is an example of a typical 
  84. entry:
  85.  
  86.                   COBOL EXAMPLE $S
  87.  
  88. This  entry would cause the compiler to  ignore  the 
  89. first  six characters (used for sequence numbers) at 
  90. the beginning of each input line.   In each case the 
  91. toggle reverses the default value.
  92.  
  93.      $C  - No intermediate code.   Default  is  off.  
  94.      Setting  this toggle speeds initial compilation 
  95.      for syntax checking.   When this toggle is  set 
  96.      the "CIN" file is empty.
  97.  
  98.      $D  - Debugging mode.   Default is  off.   This 
  99.      toggle sets the debugging mode, which means all 
  100.      debugging  lines  (those with a ':'  in  column 
  101.      one)  are compiled.   If this toggle is not set 
  102.      in the ENVIRONMENT DIVISION of the source  pro-
  103.      gram  all  debugging lines are treated as  com-
  104.      ments.
  105.  
  106.      $L  - list the input code on the screen as  the 
  107.      program  is compiled.   Default is  on.   Error 
  108.      messages  are displayed at the terminal in  any 
  109.      case.
  110. COBOL.DOC                                    Page 3
  111.  
  112.  
  113.      $P  - Productions.  List  productions  as  they 
  114.      occur.  Default is off.
  115.  
  116.      $S  - sequence  numbers  are in the  first  six 
  117.      positions of each record.  Default is off.
  118.  
  119.      $T  - Tokens.   List tokens from  the  scanner.  
  120.      Default is off.
  121.  
  122.      $W  - Create a list file.   Default is off.   A 
  123.      listing  file  is created when this  toggle  is 
  124.      set.   When  this toggle is not set  the  "LST" 
  125.      file will only contain error messages.
  126.  
  127.  
  128.               IV. Run Time Conventions
  129.  
  130. This section explains how to run the compiler on the 
  131. current system.   The compiler expects to see a file 
  132. with a type of CBL as the input file.   In  general, 
  133. the  input  is  free form.   If the  input  includes 
  134. sequence numbers then the compiler must be  notified 
  135. by setting the appropriate toggle.   The compiler is 
  136. started by typing COBOL <filename>.   Where the file 
  137. name is the system name of the input file.  There is 
  138. no  interaction required to start the second part of 
  139. the  compiler.   The output file will have the  same 
  140. <filename>  as the input file,  and will be given  a 
  141. file type of CIN.   any previous copies of the  file 
  142. will  be erased.   As with the CIN file,  a LST file 
  143. will be created with the same file name as the input 
  144. file and any previous LST files with that name  will 
  145. `e erased.
  146.  
  147. The  interpreter  is started by typing  EXEC  <file-
  148. name>.   The first program is a loader,  and it will 
  149. display  "NPS MICRO-COBOL LOADER VERS 2.1"  followed 
  150. by the display "LOAD FINISHED" to indicates success-
  151. ful  completion.    The  run-time  package  will  be 
  152. brought in by the EXEC routine, and execution should 
  153. continue without interruption.   Successful transfer 
  154. of  control to the interpreter will be indicated  by 
  155. the  display "NPS MICRO-COBOL INTERPRETER VERS 2.1."  
  156. Completion of program execution will be indicated by 
  157. the display "X EXECUTION ERROR(S)," where "X" is the 
  158. number of errors which occurred during execution.
  159. COBOL.DOC                                    Page 4
  160.  
  161.  
  162.            V. File Interactions with CP/M
  163.  
  164. The  file structure that is expected by the  program 
  165. imposes some restrictions on the system.  References 
  166. 4  and 5 contain detailed information on the facili-
  167. ties of CP/M,  and should be consulted for  details.  
  168. The  information that has been included in this sec-
  169. tion is intended to explain where limitations  exist 
  170. and how the program interacts with the system.
  171.  
  172. All files in CP/M are on a random access device, and 
  173. there  is  no way for the system to distinguish  se-
  174. quential files from files created in a random  mode.  
  175. This  means  that  the various types  of  reads  and 
  176. writes  are  all  valid to any file that  has  fixed 
  177. length  records.   The  restrictions of  the  ASSIGN 
  178. statement  prevent a file from being open  for  both 
  179. random and sequential actions during one program.
  180.  
  181. Each  logical  record  is terminated by  a  carriage 
  182. return  and a line feed.   In the case  of  variable 
  183. length  records,  this  is  the only end  mark  that 
  184. exists.   This  convention was adopted to allow  the 
  185. various programs which are used in CP/M to work with 
  186. the files.   Files created by the editor,  for exam-
  187. ple,  will generally be variable length files.  This 
  188. convention  removes the capability of reading  vari-
  189. able length files in a random mode.
  190.  
  191. All of the physical records are 128 bytes in length, 
  192. and  the  program  supplies buffer space  for  these 
  193. records in addition to the logical records.  Logical 
  194. records may be of any desired length.
  195. COBOL.DOC                                    PAGE 5
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.               IDENTIFICATION DIVISION
  206.  
  207. ELEMENT:
  208.  
  209.      IDENTIFICATION DIVISION Format
  210.  
  211. FORMAT:
  212.  
  213.      IDENTIFICATION DIVISION.
  214.      PROGRAM-ID. <comment>.
  215.      [AUTHOR. <comment>.]
  216.      [DATE-WRITTEN. <comment>.]
  217.      [SECURITY. <comment>.]
  218.  
  219. DESCRIPTION:
  220.  
  221.      This division provides information for  program 
  222.      identification  for the reader.   The order  of 
  223.      the lines is fixed.
  224.  
  225. EXAMPLES:
  226.  
  227.      IDENTIFICATION DIVISION.
  228.  
  229.      PROGRAM-ID. SAMPLE.
  230.  
  231.      AUTHOR. HAL R POWELL.
  232. COBOL.DOC                                    PAGE 6
  233.  
  234.  
  235.  
  236.  
  237.                 ENVIRONMENT DIVISION
  238.  
  239.  
  240. ELEMENT:
  241.  
  242.      ENVIRONMENT DIVISION Format
  243.  
  244. FORMAT:
  245.  
  246.      [ ENVIRONMENT DIVISION.
  247.  
  248.      CONFIGURATION SECTION.
  249.  
  250.      SOURCE-COMPUTER. <comment> [DEBUGGING MODE].
  251.  
  252.      OBJECT-COMPUTER. <comment>.
  253.  
  254.      [INPUT-OUTPUT SECTION.
  255.  
  256.      FILE-CONTROL.
  257.  
  258.        <file-control-entry> . . .
  259.  
  260.      [I-O-CONTROL.
  261.  
  262.        SAME file-name-1 file-name-2 [file-name-3]
  263.                [file-name-4] [file-name-5]. ] ] ]
  264.  
  265. DESCRIPTION:
  266.  
  267.      This division determines the external nature of 
  268.      a  file.   In the case of CP/M all of the files 
  269.      used  can  be accessed either  sequentially  or 
  270.      randomly except for variable length files which 
  271.      are  sequential only.   The debugging  mode  is 
  272.      also  set by this section.   The DEBUGGING MODE 
  273.      clause  is used in conjunction with the ':'  to 
  274.      indicate  conditional  compilation.    If  this 
  275.      clause is specified, all debugging lines (those 
  276.      with  a ':' in column one)  are  compiled.   If 
  277.      this  clause  is not specified,  all  debugging 
  278.      lines are treated as comments.  In addition the 
  279.      DEBUGGING  MODE can be specified by  using  the 
  280.      compiler toggle 'D.'
  281. COBOL.DOC                                    Page 7
  282.  
  283.  
  284.                 <file-control-entry>
  285.  
  286.  
  287. ELEMENT:
  288.  
  289.      <file-control-entry>
  290.  
  291. FORMAT:
  292.  
  293.      1.
  294.         SELECT file-name
  295.          ASSIGN implementor-name
  296.          [ORGANIZATION SEQUENTIAL]
  297.          [ACCESS SEQUENTIAL].
  298.  
  299.      2.
  300.         SELECT file-name
  301.          ASSIGN implementor-name
  302.          ORGANIZATION RELATIVE
  303.          [ACCESS {SEQUENTIAL [RELATIVE data-name]}].
  304.                  {RANDOM RELATIVE data-name      }
  305.  
  306.      3.
  307.         SELECT file-name
  308.          ASSIGN implementor-name
  309.          ORGANIZATION INDEXED
  310.          [ACCESS {SEQUENTIAL}].
  311.                  {RANDOM    }
  312.  
  313. DESCRIPTION:
  314.  
  315.      The file-control-entry defines the type of file 
  316.      that the program expects to see.   There is  no 
  317.      difference  on  the diskette,  but the type  of 
  318.      reads  and writes that are performed will  dif-
  319.      fer.   For  CP/M the implementor name needs  to 
  320.      conform to the normal specifications.   Indexed 
  321.      is not implemented.
  322.  
  323. EXAMPLES:
  324.  
  325.      SELECT CARDS
  326.          ASSIGN CARD.FIL.
  327.      SELECT RANDOM-FILE
  328.          ASSIGN A.RAN
  329.          ORGANIZATION RELATIVE
  330.          ACCESS RANDOM RELATIVE RAND-FLAG.
  331. COBOL.DOC                                    PAGE 8
  332.  
  333.  
  334.                    DATA DIVISION
  335.  
  336. ELEMENT:
  337.  
  338.      DATA DIVISION Format
  339.  
  340. FORMAT:
  341.  
  342.      DATA DIVISION.
  343.      [FILE SECTION.
  344.      [FD file-name
  345.          [BLOCK integer-1 RECORDS]
  346.          [RECORD [integer-1 TO] integer-3]
  347.          LABEL RECORDS {STANDARD}]
  348.                 {OMITTED}
  349.          [VALUE OF implementor-name-1 literal-1
  350.             [implementor-name-2 literal-2] . . . ].
  351.          [<record-description-entry>] . . . ] . . .
  352.          [WORKING-STORAGE SECTION.
  353.          [<record-description-entry>] . . . ]
  354.          [LINKAGE SECTION.
  355.          [<record-description-entry>] . . . ]
  356. COBOL.DOC                                    Page 9
  357.  
  358.  
  359.                      <comment>
  360.  
  361. DESCRIPTION:
  362.  
  363.      This is the section that describes how the data 
  364.      is structured.   There are no major differences 
  365.      from  standard COBOL except for the  following:  
  366.      1.  Label records make no sense on the diskette 
  367.      so  no  entry is required.   2.   The VALUE  OF 
  368.      clause likewise has no meaning for CP/M.   If a 
  369.      record is given two lengths as in RECORD 12  to 
  370.      128,  the  file is taken to be variable  length 
  371.      and  can  only  be accessed in  the  sequential 
  372.      mode.  See the section on files for more infor-
  373.      mation.
  374. COBOL.DOC                                    Page 10
  375.  
  376.  
  377.                      <comment>
  378.  
  379.  
  380. ELEMENT:
  381.  
  382.      <comment>
  383.  
  384. FORMAT:
  385.  
  386.      any string of characters
  387.  
  388. DESCRIPTION:
  389.  
  390.      A  comment is a string of characters.   It  may 
  391.      include  anything other than a period  followed 
  392.      by a blank or a reserved word,  either of which 
  393.      terminate the string.  Comments may be empty if 
  394.      desired,  but the terminator is still  required 
  395.      by the program.
  396.  
  397. EXAMPLES:
  398.  
  399.      this is a comment
  400.      anotheroneallruntogether
  401.      8080b 16K
  402.  
  403. Note  page  1:   * in column 1 to cause compiler  to 
  404. ignore sequence numbers.
  405. COBOL.DOC                                    Page 11
  406.  
  407.  
  408.               <data-description-entry>
  409.  
  410. ELEMENT:
  411.  
  412.      <data-description-entry> Format
  413.  
  414. FORMAT:
  415.  
  416.      level-number {data-name}
  417.                   {FILLER   }
  418.      [REDEFINES data-name]
  419.      [PIC character-string]
  420.      [USAGE {COMP   }]
  421.             {COMP-3}
  422.             {COMPUTATIONAL}
  423.             {DISPLAY}
  424.      [SIGN {LEADING} [SEPARATE]]
  425.             {TRAILING}
  426.      [OCCURS integer]
  427.      [SYNC [LEFT]]
  428.             [RIGHT]
  429.      [VALUE literal].
  430.  
  431. DESCRIPTION:
  432.  
  433.      This  statement describes the  specific  attri-
  434.      butes  of the data.   Since the 8080 is a  byte 
  435.      machine,  there  was  no  meaning to  the  SYNC 
  436.      clause,  and thus it has not been  implemented, 
  437.      however  existing programs that are transferred 
  438.      to  MICRO-COBOL and use this feature will  com-
  439.      pile  and  execute successfully.   All  numeric 
  440.      data are maintained in DISPLAY format or packed 
  441.      BCD if the COMP-3 option is used.
  442.  
  443. EXAMPLES:
  444.  
  445.      01 CARD-RECORD.
  446.        02 PART PIC X(5).
  447.        02 NEXT-PART PIC 99V99 USAGE DISPLAY.
  448.        02 FILLER.
  449.           03 NUMB PIC S9(3)V9 SIGN LEADING SEPARATE.
  450.           03 LONG-NUMB 9(15).
  451.           03 STRING REDEFINES LONG-NUMB PIC X(15).
  452.        02 ARRAY PIC 99 OCCURS 100.
  453. COBOL.DOC                                    PAGE 12
  454.  
  455.  
  456.                  PROCEDURE DIVISION
  457.  
  458. ELEMENT:
  459.  
  460.      PROCEDURE DIVISION Format
  461.  
  462. FORMAT:
  463.  
  464.      1.
  465.  
  466.         PROCEDURE DIVISION [USING name1 [name2] . . . [name5]].
  467.         section-name SECTION.
  468.         [paragraph-name. <sentence> [<sentence> . . . ] . . . ] . . .
  469.  
  470.      2.
  471.  
  472.         PROCEDURE DIVISION [USING name1 [name2] . . . [name5]].
  473.         paragraph-name. <sentence> [<sentence> . . . ] . . .
  474.  
  475. DESCRIPTION:
  476.  
  477.      As is indicated,  if the program is to  contain 
  478.      sections, then the first paragraph must be in a 
  479.      section.
  480. COBOL.DOC                                    Page 13
  481.  
  482.  
  483.                      <sentence>
  484.  
  485. ELEMENT:
  486.  
  487.      <sentence>
  488.  
  489. FORMAT:
  490.  
  491.      <imperative-statement>
  492.  
  493.      <conditional-statement>
  494. COBOL.DOC                                    Page 14
  495.  
  496.  
  497.                <imperative-statement>
  498.  
  499. ELEMENT:
  500.  
  501.      <imperative-statement>
  502.  
  503. FORMAT:
  504.  
  505.      The following verbs are *always* imperative:
  506.  
  507.         ACCEPT . . . . . . . . 15
  508.         CALL . . . . . . . . . 17
  509.         CLOSE  . . . . . . . . 17
  510.         DISPLAY  . . . . . . . 18
  511.         EXIT . . . . . . . . . 19
  512.         GO . . . . . . . . . . 20
  513.         MOVE . . . . . . . . . 22
  514.         OPEN . . . . . . . . . 24
  515.         PERFORM  . . . . . . . 25
  516.         STOP . . . . . . . . . 27
  517.  
  518.      The following *may be* imperatives:
  519.  
  520.      arithmetic verbs (ADD (16), DIVIDE (19), MULTI-
  521.      PLY  (23),  SUBTRACT (28)) *without*  the  SIZE 
  522.      ERROR  statement and DELETE (18),  WRITE  (29), 
  523.      and REWRITE (26) *without* the INVALID option.
  524. COBOL.DOC                                    Page 15
  525.  
  526.  
  527.               <conditional-statements>
  528.  
  529. ELEMENT:
  530.  
  531.      <conditional-statements>
  532.  
  533. FORMAT:
  534.  
  535.      IF . . . . . . . . . . . . 21
  536.      READ . . . . . . . . . . . 26
  537.  
  538.      arithmetic  verbs *with* the SIZE ERROR  state-
  539.      ment and DELETE,  WRITE, and REWRITE *with* the 
  540.      INVALID option.
  541.  
  542.  
  543.                        *****
  544.  
  545.  
  546.                        ACCEPT
  547.  
  548. ELEMENT:
  549.  
  550.      ACCEPT
  551.  
  552. FORMAT:
  553.  
  554.      ACCEPT<identifier>
  555.  
  556. DESCRIPTION:
  557.  
  558.      This statement reads up to 255 characters  from 
  559.      the  console.   The  usage of the item must  be 
  560.      DISPLAY.
  561.  
  562. EXAMPLES:
  563.  
  564.      ACCEPT IMAGE.
  565.  
  566.      ACCEPT NUM(9).
  567. COBOL.DOC                                    Page 16
  568.  
  569.  
  570.                         ADD
  571.  
  572. ELEMENT:
  573.  
  574.      ADD
  575.  
  576. FORMAT:
  577.  
  578.      ADD  {identifier-1}  [{identifier-2}]  . . .  TO identifier-m
  579.           {literal-1   }   {literal-2   }
  580.           [ROUNDED] [SIZE ERROR <imperative-statement>]
  581.  
  582. DESCRIPTION:
  583.  
  584.      This  instruction  adds either one number to  a 
  585.      second with the result being placed in the last 
  586.      location.   Multiple adds have not been  imple-
  587.      mented.
  588.  
  589. EXAMPLES:
  590.  
  591.      ADD 10 TO NUM1
  592.  
  593.      ADD X TO Z ROUNDED.
  594.  
  595.      ADD 100 TO NUMBER SIZE ERROR GO ERROR-LOC
  596. COBOL.DOC                                    Page 17
  597.  
  598.  
  599.                         CALL
  600.  
  601. ELEMENT:
  602.  
  603.      CALL
  604.  
  605. FORMAT:
  606.  
  607.      CALL literal [USING name1 [name2] . . . [nameN]]
  608.  
  609. DESCRIPTION:
  610.  
  611.      Control is transferred to the called  procedure 
  612.      with an address of each of the parameters to be 
  613.      passed.   The  parameters  map to those in  the 
  614.      linkage  section of the  called  program.   The 
  615.      type  and  size  of the parameters  must  match 
  616.      exactly.
  617.  
  618. EXAMPLES:
  619.  
  620.      CALL 'NC152' USING DN1
  621.  
  622.      CALL 'PRINT'
  623.  
  624.      CALL 'ADDLIST' USING VAR1 VAR2 VAR3
  625.  
  626.                        *****
  627.  
  628.                        CLOSE
  629.  
  630. ELEMENT:
  631.  
  632.      CLOSE
  633.  
  634. FORMAT:
  635.  
  636.      CLOSE file-name
  637.  
  638. DESCRIPTION:
  639.  
  640.      Files  must be closed if they have ben written.  
  641.      However,  the  normal requirement to  close  an 
  642.      input  file prior to the end of processing does 
  643.      not exist.
  644.  
  645. EXAMPLES:
  646.  
  647.      CLOSE FILE1
  648.  
  649.      CLOSE RANDFILE
  650. COBOL.DOC                                    Page 18
  651.  
  652.  
  653.                        DELETE
  654.  
  655. ELEMENT:
  656.  
  657.      DELETE
  658.  
  659. FORMAT:
  660.  
  661.      DELETE file-name [INVALID <imperative-statement>]
  662.  
  663. DESCRIPTION:
  664.  
  665.      This  statement requires the file-name  of  the 
  666.      item  to be deleted.   The record is  logically 
  667.      removed by filling it with a high value charac-
  668.      ter, which is not displayable to the console or 
  669.      line printer.   The logical record space can be 
  670.      used  again  by writing a valid record  in  its 
  671.      place.
  672.  
  673. EXAMPLES:
  674.  
  675.      DELETE FILE-NAME
  676.  
  677.                        *****
  678.  
  679.                       DISPLAY
  680.  
  681. ELEMENT:
  682.  
  683.      DISPLAY
  684.  
  685. FORMAT:
  686.  
  687.      DISPLAY {identifier} [{identifier-1}] . . . [{identifier-N}]
  688.              {literal   }  {literal-1   }  . . .  {literal-N   }
  689.  
  690. DESCRIPTION:
  691.  
  692.      This  displays the contents of an identifier or 
  693.      displays a literal on the console.   Usage must 
  694.      be DISPLAY.   The maximum length of the display 
  695.      is  80  characters for literal values  and  255 
  696.      characters for identifiers.
  697.  
  698. EXAMPLES:
  699.  
  700.      DISPLAY MESSAGE-1
  701.  
  702.      DISPLAY MESSAGE-3 10
  703.  
  704.      DISPLAY 'THIS MUST BE THE END'
  705. COBOL.DOC                                    Page 19
  706.  
  707.  
  708.                        DIVIDE
  709.  
  710. ELEMENT:
  711.  
  712.      DIVIDE
  713.  
  714. FORMAT:
  715.  
  716.      DIVIDE {identifier} INTO identifier-1 [ROUNDED]
  717.             {literal   }
  718.           [SIZE ERROR <imperative-statement>]
  719.  
  720. DESCRIPTION:
  721.  
  722.      The result of the division is stored in identi-
  723.      fier-1; any remainder is lost.
  724.  
  725. EXAMPLES:
  726.  
  727.      DIVIDE NUMB INTO STORE
  728.      DIVIDE 25 INTO RESULT
  729.  
  730.  
  731.                        *****
  732.  
  733.  
  734.                         EXIT
  735.  
  736. ELEMENT:
  737.  
  738.      EXIT
  739.  
  740. FORMAT:
  741.  
  742.      EXIT [PROGRAM]
  743.  
  744. DESCRIPTION:
  745.  
  746.      The EXIT command causes no action by the inter-
  747.      preter  but allows for an empty  paragraph  for 
  748.      the construction of a common return point.  The 
  749.      optional  PROGRAM  terminates a subroutine  and 
  750.      returns  to the calling program.   It's use  in 
  751.      the main program causes no action to be taken.
  752.  
  753. EXAMPLES:
  754.  
  755.      EXIT PROGRAM
  756.  
  757.      EXIT
  758. COBOL.DOC                                    Page 20
  759.  
  760.  
  761.                          GO
  762.  
  763. ELEMENT:
  764.  
  765.      GO
  766.  
  767. FORMAT:
  768.  
  769.      1.
  770.           GO procedure-name
  771.  
  772.      2.
  773.           GO procedure-1 [procedure-2] . . . procedure-20
  774.  
  775.              DEPENDING identifier
  776.  
  777. DESCRIPTION:
  778.  
  779.      The  GO command causes an unconditional  branch 
  780.      to  the  routine specified.   The  second  form 
  781.      causes a forward branch depending on the  value 
  782.      of the contents of the identifier.  The identi-
  783.      fier  must be a numeric integer  value.   There 
  784.      can be no more than 20 procedure names.
  785.  
  786. EXAMPLES:
  787.  
  788.      GO READ-CARD.
  789.  
  790.      GO READ1 READ2 READ3 DEPENDING READ-INDEX
  791. COBOL.DOC                                    Page 21
  792.  
  793.  
  794.                          IF
  795.  
  796. ELEMENT:
  797.  
  798.      IF
  799.  
  800. FORMAT:
  801.  
  802.      IF <condition> {stmt-lst   } END-IF
  803.      IF <condition> {stmt-lst   } ELSE {stmt-lst} END-IF
  804.           {NEXT SENTENCE}   {NEXT SENTENCE}
  805.  
  806. DESCRIPTION:
  807.  
  808.      This  is  an enhanced version of  the  standard 
  809.      COBOL IF statement.  Nesting of IF statement is 
  810.      allowed.
  811.  
  812. EXAMPLES:
  813.  
  814.      IF A GREATER B ADD A TO C ELSE GO ERROR-ONE END-IF.
  815.  
  816.      IF A NOT NUMERIC NEXT SENTENCE ELSE MOVE ZERO TO A END-IF.
  817.  
  818.      IF A LESS B
  819.           DISPLAY A
  820.           DISPLAY B END-IF.
  821.  
  822.      IF A GREATER B
  823.           DISPLAY A
  824.           DISPLAY B
  825.      ELSE
  826.           DISPLAY C
  827.           DISPLAY D END-IF.
  828.  
  829.      IF A GREATER B
  830.           IF A GREATER C
  831.              DISPLAY A
  832.           ELSE
  833.              DISPLAY C
  834.           END-IF
  835.      ELSE
  836.           IF B GREATER C
  837.              DISPLAY B
  838.           ELSE
  839.              DISPLAY C
  840.           END-IF
  841.      END-IF.
  842. COBOL.DOC                                    Page 22
  843.  
  844.  
  845.                         MOVE
  846.  
  847. ELEMENT:
  848.  
  849.      MOVE
  850.  
  851. FORMAT:
  852.  
  853.      MOVE {identifier-1} TO identifier-2
  854.           {literal     }
  855.  
  856. DESCRIPTION:
  857.  
  858.      The standard list of allowable moves applies to 
  859.      this action.  As a space saving feature of this 
  860.      implementation,  all  numeric moves go  through 
  861.      the  accumulators.   This  makes numeric  moves 
  862.      slower  than  alpha-numeric  moves,  and  where 
  863.      possible they should be avoided.  Any move that 
  864.      involves  picture clauses that are exactly  the 
  865.      same  can be accomplished as  an  alpha-numeric 
  866.      move  if  the elements are redefined as  alpha-
  867.      numeric;   also  all  group  moves  are  alpha-
  868.      numeric.
  869.  
  870. EXAMPLES:
  871.  
  872.      MOVE SPACE TO PRINT-LINE.
  873.  
  874.      MOVE A(10) TO B(PTR).
  875. COBOL.DOC                                    Page 23
  876.  
  877.  
  878.                       MULTIPLY
  879.  
  880. ELEMENT:
  881.  
  882.      MULTIPLY
  883.  
  884. FORMAT:
  885.  
  886.      MULTIPLY {identifier} BY identifier-2 [ROUNDED]
  887.               {literal   }
  888.           [SIZE ERROR <imperative-statement>]
  889.  
  890. DESCRIPTION:
  891.  
  892.      The multiply routine uses a double length  reg-
  893.      ister to calculate the result.  This allows the 
  894.      result  generated  to be of maximum  precision.  
  895.      The  actual value stored will be determined  by 
  896.      the  amount of storage allocated for the  vari-
  897.      able.  Overflow will occur if the number in the 
  898.      register is larger than the variable.   If  the 
  899.      precision  in the register is greater than  the 
  900.      variable,  truncation  occurs unless the  round 
  901.      option is specified.
  902.  
  903. EXAMPLES:
  904.  
  905.      MULTIPLY X BY Y.
  906.  
  907.      MULTIPLY A BY B(7) SIZE ERROR GO OVERFLOW.
  908. COBOL.DOC                                    Page 24
  909.  
  910.  
  911.                         OPEN
  912.  
  913. ELEMENT:
  914.  
  915.      OPEN
  916.  
  917. FORMAT:
  918.  
  919.      OPEN {INPUT file-name-1 } [{file-name-2}] . . .
  920.           {OUTPUT file-name-1} [{file-name-2}] . . .
  921.           {I-O file-name-1   } [{file-name-2}] . . .
  922.  
  923. DESCRIPTION:
  924.  
  925.      The  three types of OPENS have exactly the same 
  926.      effect on the diskette.  However, they do allow 
  927.      for  internal  checking of the other  file  ac-
  928.      tions.  For example, a write to a file set open 
  929.      as  input will cause a fatal  error.   Multiple 
  930.      opens have not been implemented.
  931.  
  932. EXAMPLES:
  933.  
  934.      OPEN INPUT CARDS.
  935.  
  936.      OPEN OUTPUT REPORT-FILE.
  937. COBOL.DOC                                    Page 25
  938.  
  939.  
  940.                       PERFORM
  941.  
  942. ELEMENT:
  943.  
  944.      PERFORM
  945.  
  946. FORMAT:
  947.  
  948.      1.
  949.           PERFORM procedure-name [THRU procedure-name-2]
  950.      2.
  951.           PERFORM procedure-name [THRU procedure-name-2]
  952.              {identifier} TIMES
  953.              {integer   }
  954.      3.
  955.           PERFORM procedure-name [THRU procedure-name-2]
  956.              UNTIL <condition>
  957.      4.
  958.           PERFORM procedure-name VARYING {identifier}
  959.              FROM {identifier} BY {identifier}
  960.              UNTIL <condition>
  961.  
  962. DESCRIPTION:
  963.  
  964.      All four options are supported.   Branching may 
  965.      be either forward or backward,  and the  proce-
  966.      dures  called  may have perform  statements  in 
  967.      them  as long as the end points do not coincide 
  968.      or overlap.
  969.  
  970. EXAMPLES:
  971.  
  972.      PERFORM OPEN-ROUTINE.
  973.  
  974.      PERFORM TOTALS THRU END-REPORT.
  975.  
  976.      PERFORM SUM 10 TIMES.
  977.  
  978.      PERFORM SKIP-LINE UNTIL PG-CNT GREATER 60.
  979.  
  980.      PERFORM REPEAT-AGAIN VARYING COUNTER FROM 1 BY 2
  981.           UNTIL COUNTER EQUAL 10.
  982. COBOL.DOC                                    Page 26
  983.  
  984.  
  985.                         READ
  986.  
  987. ELEMENT:
  988.  
  989.      READ
  990.  
  991. FORMAT:
  992.  
  993.      1.
  994.           READ file-name INVALID <imperative-statement>
  995.  
  996.      2.
  997.           READ file-name END <imperative-statement>
  998.  
  999. DESCRIPTION:
  1000.  
  1001.      The  invalid  condition is only  applicable  to 
  1002.      files in a random mode.   All sequential  files 
  1003.      must have an END statement.
  1004.  
  1005. EXAMPLES:
  1006.  
  1007.      READ CARDS END GO END-OF-FILE.
  1008.  
  1009.      READ RANDOM-FILE INVALID MOVE SPACES TO REC-1.
  1010.  
  1011.                        *****
  1012.  
  1013.                       REWRITE
  1014.  
  1015. ELEMENT:
  1016.  
  1017.      REWRITE
  1018.  
  1019. FORMAT:
  1020.  
  1021.      REWRITE record-name [INVALID <imperative>]
  1022.  
  1023. DESCRIPTION:
  1024.  
  1025.      REWRITE  is only valid for files that are  open 
  1026.      in  the I-O mode.   The INVALID clause is  only 
  1027.      valid for random files.  This statement results 
  1028.      in  the current record being written back  into 
  1029.      the place that it was just read from,  the last 
  1030.      executed read.
  1031.  
  1032. EXAMPLES:
  1033.  
  1034.      REWRITE CARDS.
  1035.  
  1036.      REWRITE RAND-1 INVALID PERFORM ERROR-CHECK.
  1037. COBOL.DOC                                    Page 27
  1038.  
  1039.  
  1040.                         STOP
  1041.  
  1042. ELEMENT:
  1043.  
  1044.      STOP
  1045.  
  1046. FORMAT:
  1047.  
  1048.      STOP {RUN   }
  1049.           {literal}
  1050.  
  1051. DESCRIPTION:
  1052.  
  1053.      This  statement stops execution of the program.  
  1054.      If a literal is specified,  then the literal is 
  1055.      displayed  on the console and a prompt is  dis-
  1056.      played  giving the operator the option of  ter-
  1057.      minating or continuing program execution.
  1058.  
  1059. EXAMPLES:
  1060.  
  1061.      STOP RUN.
  1062.  
  1063.      STOP 1.
  1064.  
  1065.      STOP 'INVALID FINISH'.
  1066.  
  1067.      For  the last two examples the following prompt 
  1068.      is displayed:
  1069.  
  1070.      OPERATOR ENTER A <CR> TO CONTINUE
  1071.          OR ENTER AN "S" TO TERMINATE.
  1072. COBOL.DOC                                    Page 28
  1073.  
  1074.  
  1075.                       SUBTRACT
  1076.  
  1077. ELEMENT:
  1078.  
  1079.      SUBTRACT
  1080.  
  1081. FORMAT:
  1082.  
  1083.      SUBTRACT {identifier-1} [identifier-2] . . . FROM identifier-m
  1084.               {literal-1   } [literal-2   ]
  1085.           [ROUNDED] [SIZE ERROR <imperative-statement>]
  1086.  
  1087. DESCRIPTION:
  1088.  
  1089.      Identifier-m,  is  decremented by the value  of 
  1090.      identifier/literal one.  The results are stored 
  1091.      back in identifier-m.   Rounding and size error 
  1092.      options  are available  if  desired.   Multiple 
  1093.      subtracts have not been implemented.
  1094.  
  1095. EXAMPLES:
  1096.  
  1097.      SUBTRACT 10 FROM SUB(12).
  1098.  
  1099.      SUBTRACT A FROM C ROUNDED.
  1100. COBOL.DOC                                    Page 29
  1101.  
  1102.  
  1103.                        WRITE
  1104.  
  1105. ELEMENT:
  1106.  
  1107.      WRITE
  1108.  
  1109. FORMAT:
  1110.  
  1111.      1.
  1112.           WRITE record-name [{BEFORE} ADVANCING {INTEGER}]
  1113.                  {AFTER }      {PAGE  }
  1114.      2.
  1115.           WRITE record-name INVALID <imperative-statement>
  1116.  
  1117. DESCRIPTION:
  1118.  
  1119.      The  record  specified is written to  the  file 
  1120.      specified  in  the file section of  the  source 
  1121.      program.   The  INVALID option only applies  to 
  1122.      random files.
  1123.  
  1124. EXAMPLES:
  1125.  
  1126.      WRITE OUT-FILE.
  1127.  
  1128.      WRITE RAND-FILE INVALID PERFORM ERROR-RECOV.
  1129. COBOL.DOC                                    Page 30
  1130.  
  1131.  
  1132.                     <condition>
  1133.  
  1134. ELEMENT:
  1135.  
  1136.      <condition>
  1137.  
  1138. FORMAT:
  1139.  
  1140.      RELATIONAL CONDITION:
  1141.  
  1142.           {identifier-1} [NOT] {GREATER} {identifier-2}
  1143.           {literal-1}      {LESS  } {literal-2   }
  1144.                            {EQUAL }
  1145.      CLASS CONDITION:
  1146.           identifier [NOT] {NUMERIC  }
  1147.                            {ALPHABETIC}
  1148.  
  1149. DESCRIPTION:
  1150.  
  1151.      It  is not valid to compare two literals.   The 
  1152.      class  condition NUMERIC will allow for a  sign 
  1153.      if the identifier is signed numeric.
  1154.  
  1155. EXAMPLES:
  1156.  
  1157.      A NOT LESS 10.
  1158.  
  1159.      LINE GREATER 'C'.
  1160.  
  1161.      NUMB1 NOT NUMERIC
  1162. COBOL.DOC                                    Page 31
  1163.  
  1164.  
  1165.                     Subscripting
  1166.  
  1167. ELEMENT:
  1168.  
  1169.      subscripting
  1170.  
  1171. FORMAT:
  1172.  
  1173.      data-name (subscript)
  1174.  
  1175. DESCRIPTION:
  1176.  
  1177.      Any  item defined with an OCCURS may be  refer-
  1178.      enced by a subscript.   The subscript may be  a 
  1179.      literal integer,  or it may be a data item that 
  1180.      has been specified as an integer.   If the sub-
  1181.      script is signed,  the sign must be positive at 
  1182.      the time of its use.
  1183.  
  1184. EXAMPLES:
  1185.  
  1186.      A(10)
  1187.  
  1188.      ITEM(SUB)
  1189. COBOL.DOC                                    Page 32
  1190.  
  1191.  
  1192.                  VI. Error Messages
  1193.  
  1194.              A. Compiler Fatal Messages
  1195.  
  1196.  
  1197. BR  Bad read - disk error,  no corrective action can 
  1198.     be taken in the program.
  1199.  
  1200. CL  Close error - unable to close the output file.
  1201.  
  1202. MA  Make error - could not create the output file.
  1203.  
  1204. MO  Memory  overflow  - the code and constants  gen-
  1205.     erated  will  not  fit in  the  allotted  memory 
  1206.     space.
  1207.  
  1208. OP  Open error - can not open the input file,  or no 
  1209.     such file present.
  1210.  
  1211. SO  Stack  overflow  - LALR (1)  parsing  stack  has 
  1212.     exceeded its maximum allowable size.
  1213.  
  1214. ST  Symbol  table  overflow - symbol  table  is  too 
  1215.     large for the allocated space.
  1216.  
  1217. WR  Write error - disk error, could not write a code 
  1218.     record to the disk.
  1219. COBOL.DOC                                    Page 33
  1220.  
  1221.  
  1222.                 B. Compiler Warnings
  1223.  
  1224. DD  Carriage  Control error - The WRITE BEFORE/AFTER 
  1225.     ADVANCING  option can only be used with  sequen-
  1226.     tial files.
  1227.  
  1228. CE  Close error - attempted to close a  non-existing 
  1229.     file.
  1230.  
  1231. DD  Duplicate  Declaration - the identifier name has 
  1232.     been previously declared.
  1233.  
  1234. EL  Extra levels - only 10 are allowed.
  1235.  
  1236. FT  File  type - the data element used in a read  or 
  1237.     write statement is not a file name.
  1238.  
  1239. IA  Invalid  access - the specified options are  not 
  1240.     an allowable combination.
  1241.  
  1242. ID  Identifier  stack overflow - more than 20  items 
  1243.     in a GO - DEPENDING statement.
  1244.  
  1245. IS  Invalid subscript - an item was subscripted  but 
  1246.     it was not defined by an OCCURS.
  1247.  
  1248. IT  Invalid  type - the field types do not match for 
  1249.     this statement.
  1250.  
  1251. LE  Literal error - a literal value was assigned  to 
  1252.     an  item that is part of a group item previously 
  1253.     assigned a value.
  1254.  
  1255. LV  Literal  value error - the PICTURE clause  field 
  1256.     type  does  not match the VALUE  clause  literal 
  1257.     type.
  1258.  
  1259. L7  Level 77 error - level 77 used incorrectly.
  1260.  
  1261. MD  Multiple decimals - a numeric literal in a VALUE 
  1262.     clause contains more than one sign.
  1263.  
  1264. NF  No  file assigned - there was no  SELECT  clause 
  1265.     for this file.
  1266.  
  1267. NI  Not  implemented - a production was used that is 
  1268.     not implemented.
  1269.  
  1270. NP  No  production  - no production exists  for  the 
  1271.     current  parser  configuration;  error  recovery 
  1272.     will automatically occur.
  1273. COBOL.DOC                                    Page 34
  1274.  
  1275.  
  1276.             B. Compiler Warnings (cont.)
  1277.  
  1278. NV  Numeric value - a numeric value was assigned  to 
  1279.     a non-numeric item.
  1280.  
  1281. OE  Open error - attempt to open a file that was not 
  1282.     declared;  or  attempted to open a file for  I-O 
  1283.     that was not a RELATIVE file.
  1284.  
  1285. OL  OCCURS  LEVEL - 01 and 77 levels can not contain 
  1286.     an occurs clause.
  1287.  
  1288. PC  Picture clause - a pic clause exceeds 30 charac-
  1289.     ters.
  1290.  
  1291. P1  More than one float symbol declared.
  1292.  
  1293. P2  Non-numeric data in repetition clause or missing 
  1294.     right parenthesis.
  1295.  
  1296. P3  Invalid or incompatible symbol in pic clause.
  1297.  
  1298. P4  Invalid symbol(s) embedded within a float symbol 
  1299.     only /,O,B,',' allowed.
  1300.  
  1301. P5  Invalid  combination of symbols in  pic  clause, 
  1302.     type cannot be determined.
  1303.  
  1304. P6  Number of possible numeric entries exceeds  reg-
  1305.     ister length max is 18.
  1306.  
  1307. PF  Paragraph  first - a section header was produced 
  1308.     after  a  paragraph header,  which is not  in  a 
  1309.     section.
  1310.  
  1311. R1  Redefine  nesting - a redefinition was made  for 
  1312.     an item which is part of a redefined item.
  1313.  
  1314. R2  Redefine length - the length of the redefinition 
  1315.     item  was  greater than the item that  is  rede-
  1316.     fined.   That  is only allowed at the 01  level.  
  1317.     This  error message may be printed out one iden-
  1318.     tifier past the redefining identifier record  in 
  1319.     which it occurred.
  1320.  
  1321. R3  Redefines  misplaced - a redefines was attempted 
  1322.     in the FILE SECTION of the source program.
  1323.  
  1324. SE  Scanner  error - the scanner was unable to  read 
  1325.     an identifier due to an invalid character.
  1326. COBOL.DOC                                    Page 35
  1327.  
  1328.  
  1329.             B. Compiler Warnings (cont.)
  1330.  
  1331.  
  1332. SG  Sign error - either a sign was expected and  not 
  1333.     found, or a sign was present when not valid.
  1334.  
  1335. SL  Significance  loss  - the number assigned  as  a 
  1336.     value is larger than the field defined.
  1337.  
  1338. TE  Type  error  - the type of a subscript index  is 
  1339.     not integer numeric.
  1340.  
  1341. UD  Undeclared  identifier - the identifier was  not 
  1342.     declared.
  1343.  
  1344. UL  Unresolved   label   - label   has   not    been 
  1345.     referenced.   This  warning will be given to all 
  1346.     references to external subroutines.
  1347.  
  1348. VE  Value error - a value statement was assigned  to 
  1349.     an item in the file section.
  1350.  
  1351. WL  Wrong level error - program attempted to write a 
  1352.     record  other  than  an 01 level  record  to  an 
  1353.     output file.
  1354. COBOL.DOC                                    Page 36
  1355.  
  1356.  
  1357.             C. Interpreter Fatal Errors
  1358.  
  1359. CL  Close  error - the system was unable to close an 
  1360.     output file.
  1361.  
  1362. CO  Call   stack  Overflow   - insufficient   memory 
  1363.     available  to transfer variable address'  and/or 
  1364.     return location for a subroutine call.
  1365.  
  1366. ME  Make  error  - the system was unable to make  an 
  1367.     output file on the disk.
  1368.  
  1369. NF  No  file  - an input file with  the  given  name 
  1370.     could not be opened.
  1371.  
  1372. OE  Open  Error  - attempt to open a file which  was 
  1373.     already open.
  1374.  
  1375. OP  open  Error  - the system was unable to  open  a 
  1376.     file.
  1377.  
  1378. PS  Procedure Stack - not enough memory to load  all 
  1379.     subroutines.
  1380.  
  1381. SO  Subroutine  Overflow  - subroutine symbol  table 
  1382.     overflow.
  1383.  
  1384. W1  Write  non-sequential - attempted to WRITE to  a 
  1385.     file  opened for INPUT or a file opened for  I-O 
  1386.     when ACCESS was SEQUENTIAL.
  1387.  
  1388. W2  Wrong key - attempted to change the key value to 
  1389.     a lower value than the number of the last record 
  1390.     written.
  1391.  
  1392. W3  Write  input  - attempted  to WRITE  to  a  file 
  1393.     opened for INPUT.
  1394.  
  1395. W4  Write  non-empty - attempted to WRITE to a  non-
  1396.     empty record.
  1397.  
  1398. W5  Read  output - attempted to READ a  file  opened 
  1399.     for OUTPUT.
  1400.  
  1401. W6  Rewrite  error - attempted to REWRITE to a  file 
  1402.     not opened for I-O.
  1403.  
  1404. W7  Rewrite  error - attempted to REWRITE  a  record 
  1405.     before  reading  the file;  or multiple  REWRITE 
  1406.     attempts without doing a READ between each.
  1407. COBOL.DOC                                    Page 37
  1408.  
  1409.  
  1410.           D. Interpreter Warning Messages
  1411.  
  1412. EM  End mark - a record that was read did not have a 
  1413.     carriage  return or a line feed in the  expected 
  1414.     location.
  1415.  
  1416. GD  Go  to  depending - the value of  the  depending 
  1417.     indicator   was  greater  than  the  number   of 
  1418.     available branch addresses.
  1419.  
  1420. IC  Invalid  character  - an invalid  character  was 
  1421.     loaded  into  an output field during  an  edited 
  1422.     move.   For example, a numeric character into an 
  1423.     alphabetic-only field.
  1424.  
  1425. NE  Numeric   Error   - non-numeric   data   in   an 
  1426.     arithmetic operation.
  1427.  
  1428. W8  Write Error - the system was unable to write  to 
  1429.     an output file on the disk.  Disk may be full.
  1430.  
  1431. SI  Sign Invalid - the sign is not a "+" or a "-."
  1432.